
function ajax(url) {
    return new Promise(function(resolve, reject) {
        // foo() 可以捕获到异常
        var xhr = new XMLHttpRequest()
        xhr.open('GET',url)
        xhr.responseType = 'json'
        xhr.onload = function() {
            if(this.status === 200) {
                resolve(this.response)
            }else {
                reject(new Error(this.statusText))
            }
        }
        xhr.send()
    }) 
}
ajax('api/user.json') //1
    .then(function onFulfilled (res) {
        console.log("onFulfilled",res)
    },function onRejected (error) {
        console.log("onRejected",error)
    })
ajax('api/user.json') //2
    .then(function onFulfilled (res) {
        console.log("onFulfilled",res)
    })
    .catch(function onRejected (error) {
        console.log("onRejected",error)
    })

/* 
    1的onRejected 只能捕获第一个then方法返回的异常
    2 能捕获整个promise链条任何一个异常，都会往下传递直至被捕获
 */
//也能捕获到异常，catch 就是then方法的别名
// 相当于
// ajax('api/user.json')
//     .then(function onFulfilled (res) {
//         console.log("onFulfilled",res)
//     })
//     .then(undefined, function onRejected (error) {
//         console.log("onRejected",error)
//     })


// 